// 导入express
const express = require("express");
// 创建路由
const Router = express.Router();
// 导入multer
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
// 导入mysql 包
const excSql = require("../utills/excsql")
// 查询所有英雄
Router.get("/", (req, res) => {
    excSql("SELECT * FROM hero", (result) => {
        res.send({ msg: "查询成功", data: result })
    })
});
// 查询单个英雄
// 合法性校验
// 1 可能对id做判断  id 是不是数字类型  判断是不是数字类型 。。  string 。。
// 2 假设 根据id找不到那个数据 需要返回些什么给前端 
// 2.1 404 状态 
// 2.2 提示信息即可 
Router.get("/:id", (req, res) => {

    const { id } = req.params
    const sql = `SELECT * FROM hero WHERE id =${id}`;
    excSql(sql, result => {
        if (result.length) {
            res.send({ msg: "查询成功", data: result[0] })
        } else {
            res.status(404)
            res.send({ msg: "请检查参数是否正确" })
        }

    })

});
// 添加英雄
// 合法性校验
// 也会判断接收到的参数 是不是 完整 
// 1 获取到参数 根据 是不是要必填项 来验证 不是必填项目 可以不用管它 一般 给默认值 
//  name 必填  gender  img 选填 
// 根据真实的业务来说，一般请求下，不允许 用户名相同！！ 名称相同 
Router.post("/", (req, res) => {
    const { name, gender = "", img = "" } = req.body
    if (!name) {
        // 返回状态码
        res.status(422) //想要创建一个参数的时候，验证不通过
        res.send({ msg: "请检查name参数的正确性" })
        return
    }
    const querySql = `SELECT * FROM hero WHERE name = '${name}'`
    excSql(querySql, result => {
        if (result.length) {
            res.send({ msg: "数据库中已经存在相同的参数" })
        } else {
            const sql = `INSERT INTO hero SET name='${name}',gender='${gender}',img='${img}'`
            excSql(sql, result => {
                console.log(result)
                res.status(201)
                res.send({ msg: "添加成功" })
            })
        }
    })
});
// 删除英雄
Router.delete("/:id", (req, res) => {
    const { id } = req.params
    const querySql = `SELECT * FROM hero WHERE id =${id}`
    excSql(querySql, result => {
        if (result.length) {
            const sql = `DELETE FROM hero WHERE id=${id}`
            excSql(sql, result => {
                res.status(204)
                res.send('')
            })
        } else {
            res.status(404)
            res.send({ msg: "你要删除的数据不存在,请检查id后重试" })
        }
    })


});
// 更新英雄
Router.put("/:id", (req, res) => {
    const { id } = req.params
    const { name, gender, img } = req.body

    const sql = `UPDATE hero SET name="${name}",gender='${gender}',img='${img}' WHERE id=${id}`
    excSql(sql, result => {
        res.status(201)
        res.send({ msg: "更新成功" })
    })
});
// 上传头像功能
Router.post("/avatar", upload.single('avatar'), (req, res, cb) => {
    console.log(req.file)
    // console.log(req.body)
    // const index = file.originalname.lastIndexOf(".")
    // const extName = file.originalname.substr(index)
    const src = `http://localhost:3009/${req.file.filename}`
    res.send({ msg: "上传成功", src })

})
module.exports = Router;